package com.example.springboot.common;

/*
 * 功能：统一返回类
 * 备注：Controller类经常调用到这个类，与前端进行数据交互
 * 日期：2024-3-18 21:59
 * 作者：RabbitQ
 */

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data //即get和set方法
@AllArgsConstructor //构造器
@NoArgsConstructor  //构造器
@Builder //构建者模式链式地创建对象

public class Result {

    /*
    * 1.code —— 请求的返回编码
    * 2.msg  —— 请求错误的详细信息
    * 3.data —— 数据以指定类型返回，如User，List等等，Object可以动态改变为指定类型
    *
    * */

    public static final String CODE_SUCCESS = "200";
    public static final String CODE_AUTH_ERROR = "401";
    public static final String CODE_SYS_ERROR = "500";

    private String code;
    private String msg;
    private Object data;

    public static Result success(){
        return new Result(CODE_SUCCESS, "请求成功", null);
    }

    public static Result success(Object data){
        return new Result(CODE_SUCCESS, "请求成功", data);
    }

    public static Result error(String msg){
        return new Result(CODE_SYS_ERROR, msg, null);
    }

    public static Result error(String code,String msg){
        return new Result(code, msg, null);
    }

    public static Result error(){
        return new Result(CODE_SYS_ERROR, "系统错误", null);
    }

    /*
    * 构建者模式，链式创建对象，如下：
    * */

    /*public static Result success(){
        return Result.builder().code(CODE_SUCCESS).msg.("请求成功").build();
    }*/

}
